<?php

/*
 * Template Usuarios.
 * @Autor: Inicial.cl
 */

class Usuarios extends TTemplateControl {

    const CAPTCHA = "CAPTCHA";

    public function OnInit($param) {
        parent::OnInit($param);
    }

    public function onLoad($param) {
        parent::onLoad($param);
        $page = $this->Request["page"];
        if (Util::isNullOrEmpty($page)) {
            $this->Response->Redirect("index.php?page=Index.Home");
        } else {
            if (!$this->page->IsPostBack) {
                $this->setMenuActive($page);
                $this->iniciarControles();
            }
        }
    }

    private function iniciarControles() {
        $this->txtUsuario->Attributes->Add("placeholder", "Usuario / Email");
        $this->txtUsuario->Attributes->Add("required", "required");
        $this->txtPassword->Attributes->Add("placeholder", "Contrase&ntilde;a");
        $this->txtPassword->Attributes->Add("required", "required");
        $this->txtUsuarioReg->Attributes->Add("placeholder", "Usuario");
        $this->txtUsuarioReg->Attributes->Add("required", "required");
        $this->txtEmailReg->Attributes->Add("placeholder", "Email");
        $this->txtEmailReg->Attributes->Add("required", "required");
        $this->txtEmailReg->Attributes->Add("type", "email");
        $this->txtPasswordReg->Attributes->Add("placeholder", "Contrase&ntilde;a");
        $this->txtPasswordReg->Attributes->Add("required", "required");
        $this->txtPasswordConfirmeReg->Attributes->Add("placeholder", "Confirme Contrase&ntilde;a");
        $this->txtPasswordConfirmeReg->Attributes->Add("required", "required");
        $this->txtFechaNacimientoReg->Attributes->Add("placeholder", "Fecha nacimiento");
        $this->txtFechaNacimientoReg->Attributes->Add("data-date-format", "dd/mm/yyyy");
        $this->txtFechaNacimientoReg->Attributes->Add("required", "required");
        $this->txtFechaNacimientoReg->Attributes->Add("data-date", "01/01/2010");
        $this->ddlSexoReg->Attributes->Add("required", "required");
        $this->txtRecuperarPassword->Attributes->Add("placeholder", "Usuario o Email");
        $this->txtRecuperarPassword->Attributes->Add("required", "required");
        $this->taModalRegistro->Attributes->Add("data-toggle", "modal");
        $this->taModalLogin->Attributes->Add("data-toggle", "modal");
        $arrCaptcha = Util::newCaptcha();
        $this->setViewState(self::CAPTCHA, $arrCaptcha[0]);
        $this->litCaptcha->Text = $arrCaptcha[1];

        $oUsuario = new Usuario();
        $oUsuario = Util::getSession("USUARIO");
        $path = $this->Page->Theme->BaseUrl . "/images/avatar/";
        if ($oUsuario != null) {
            if ($oUsuario->getId() > 0) {
                $this->pnlUsuarioAnonimo->Visible = false;
                $template = "<ul class='nav pull-right'>
                            <li class='divider-vertical'></li>
                            <li class='dropdown'>
                                <a href='#' class='dropdown-toggle' data-toggle='dropdown' style='height:30px;'>                                
                                    <img src='./themes/user/images/usuario.png' style='float:left;' />                                    
                                    <h4 style='float:right;margin-bottom:10px;margin-right:10px;'>" . $oUsuario->getUsuario() . "</h4>                                    
                                </a>
                                <ul class='dropdown-menu backgroundBlack'>
                                    <div class='opcionesUsuario'>
                                        <img src='{#RUTA_AVATAR}' alt=''>
                                        <h3>{#USUARIO}</h3>
                                        <a href='?page=Index.ViewUsuario&a={#A}'>Ver mi Perfil</a><br>
                                        <a href='?page=Index.ResetPassword&a={#A}'>Cambiar contrase&ntilde;a</a><br>
                                        <a href='?page=Index.CerrarSession'>Cerrar sesi&oacute;n</a><br>
                                        <div style='border-top: 1px solid;padding-top: 1px; margin-top: 2px;'>
                                            <span>&Uacute;ltima vez en l&iacute;nea {#TIEMPO}</span>
                                        </div>                                        
                                    </div>
                                </ul>
                            </li>
                        </ul>";
                $template = str_replace("{#A}", Util::encriptarUrl(array("id" => $oUsuario->getId())), $template);
                $template = str_replace("{#USUARIO}", $oUsuario->getUsuario(), $template);
                $template = str_replace("{#RUTA_AVATAR}", Util::isNullOrEmpty($oUsuario->getRutaAvatar()) ? $path . "dios.jpg" : $path . $oUsuario->getRutaAvatar(), $template);
                $template = str_replace("{#TIEMPO}", Util::nicetime($oUsuario->getFechaLogout()), $template);
                $this->litPanelTop->Text = $template;
            }
        }
    }

    public function btnLoginOnClick($sender, $param) {
        $oUsuario = new Usuario();
        $oUsuarioBLL = new UsuarioBLL();
        $oUsuario->setEmail($this->txtUsuario->Text);
        $oUsuario->setPassword($this->txtPassword->Text);
        $mensaje = $oUsuarioBLL->validarLogin($oUsuario);
        $page = $this->Request["page"];
        $query = $this->Request["a"];

        if ($mensaje == "OK") {
            $oUsuarioValido = Util::getSession("USUARIO");
            if ($oUsuarioValido->getIdTipoUsuario() == Tipo_usuario::ADMINISTRADOR) {
                $this->Response->Redirect("index.php?page=Index.Dashboard");
            } else {
                $this->Response->Redirect("index.php?page=" . $page . "&a=" . $query);
            }
        } else if ($mensaje == "KO") {
            $this->talMensaje->Text = "<div class='mensaje span12'>
                                        <p><i class='icon-exclamation-sign icon-white'></i> El usuario y/o contrase&ntilde;a no son v&aacute;lidos.</p>
                                    </div>";
        } else {
            $this->talMensaje->Text = "<div class='mensaje span12'>
                                        <p><i class='icon-exclamation-sign icon-white'></i> " . $mensaje . ".</p>
                                    </div>";
        }
    }

    public function btnRegistroOnClick($sender, $param) {
        $this->hfRegistro->Value = "0";
        $this->talUsuario->Text = "";
        $this->talEmail->Text = "";
        $this->talPassword->Text = "";
        $this->talPassword2->Text = "";
        $this->talfechaNacimiento->Text = "";
        $this->talSexo->Text = "";
        $oUsuarioBLL = new UsuarioBLL();

        $usuario = $this->txtUsuarioReg->Text;
        $email = $this->txtEmailReg->Text;
        $pass1 = $this->txtPasswordReg->Text;
        $pass2 = $this->txtPasswordConfirmeReg->Text;
        $valorCaptcha = $this->txtCaptcha->Text;
        $fechaNacimiento = $this->txtFechaNacimientoReg->Text;
        $sexo = $this->ddlSexoReg->SelectedValue;
        $sigue = true;
        if (Util::isNullOrEmpty($usuario)) {
            $this->talUsuario->Text = "<p class='help-block'>Debe ingresar un usuario</p>";
            $sigue = false;
        } else {
            $this->talUsuario->Text = "";
        }
        if (Util::isNullOrEmpty($email)) {
            $this->talEmail->Text = "<p class='help-block'>Debe ingresar un email</p>";
            $sigue = false;
        } else {
            $this->talEmail->Text = "";
        }
        if (Util::isNullOrEmpty($pass1)) {
            $this->talPassword->Text = "<p class='help-block'>Debe ingresar una contrase&ntilde;a</p>";
            $sigue = false;
        } else {
            $this->talPassword->Text = "";
        }
        if (Util::isNullOrEmpty($pass2)) {
            $this->talPassword2->Text = "<p class='help-block'>Debe validar su contrase&ntilde;a</p>";
            $sigue = false;
        } else {
            $this->talPassword2->Text = "";
        }
        if (Util::isNullOrEmpty($fechaNacimiento)) {
            $this->talfechaNacimiento->Text = "<p class='help-block'>Debe ingresar su fecha de nacimiento</p>";
            $sigue = false;
        } else {
            $edad = Util::calcularEdadDecimal($fechaNacimiento);
            if ($edad < 18) {
                $this->talfechaNacimiento->Text = "<p class='help-block'>Debes ser mayor de 18 a&ntilde;os!</p>";
                $sigue = false;
            } else {
                $this->talfechaNacimiento->Text = "";
            }
        }
        if ($sexo == "sexo") {
            $this->talSexo->Text = "<p class='help-block'>Debe seleccionar su sexo</p>";
            $sigue = false;
        } else {
            $this->talSexo->Text = "";
        }
        if (!Util::isNullOrEmpty($pass1) && !Util::isNullOrEmpty($pass2) && $pass1 != $pass2) {
            $this->talPassword->Text = "<p class='help-block'>Las contrase&ntilde;as no coinciden</p>";
            $this->talPassword2->Text = "<p class='help-block'>Las contrase&ntilde;as no coinciden</p>";
        }

        if (Util::isNullOrEmpty($valorCaptcha)) {
            $this->talCaptcha->Text = "<p class='help-block'>Debe ingresar resultado</p>";
            $sigue = false;
        } else if ($valorCaptcha != $this->getViewState(self::CAPTCHA)) {
            $this->talCaptcha->Text = "<p class='help-block'>Revisa tus calculos!</p>";
            $sigue = false;
        } else {
            $this->talCaptcha->Text = "";
        }

        if ($sigue) {
            $oUsuario = $oUsuarioBLL->validarUsuarioEmailExiste($usuario, $email);
            if (!Util::isNullOrEmpty($oUsuario)) {
                if (strtolower($oUsuario->getUsuario()) == strtolower($usuario)) {
                    $this->talMensajeRegistro->Text = "<div class='mensaje span12'>
                                        <button type='button' class='close'>&times;</button>
                                        <p><i class='icon-thumbs-down icon-white'></i> El <strong>usuario</strong> ingresado ya existe en nuestro sistema, por favor elije otro nombre de usuario.</p>
                                    </div>";
                    $this->talUsuario->Text = "<p class='help-block'>El usuario ya existe</p>";
                }
                if (strtolower($oUsuario->getEmail()) == strtolower($email)) {
                    $this->talMensajeRegistro->Text = "<div class='mensaje span12'>
                                        <button type='button' class='close'>&times;</button>
                                        <p><i class='icon-thumbs-down icon-white'></i> El <strong>email</strong> ingresado ya existe en nuestro sistema, por favor elije otro email para tu cuenta.</p>
                                    </div>";
                    $this->talEmail->Text = "<p class='help-block'>El email ya existe</p>";
                }
                if (strtolower($oUsuario->getUsuario()) == strtolower($usuario) && strtolower($oUsuario->getEmail()) == strtolower($email)) {
                    $this->talMensajeRegistro->Text = "<div class='mensaje span12'>
                                        <button type='button' class='close'>&times;</button>
                                        <p><i class='icon-thumbs-down icon-white'></i> El <strong>usuario</strong> y <strong>email</strong> ingresados ya existen en nuestro sistema, por favor elije otros datos para registrarte.</p>
                                    </div>";
                    $this->talUsuario->Text = "<p class='help-block'>El usuario ya existe</p>";
                    $this->talEmail->Text = "<p class='help-block'>El email ya existe</p>";
                }
            } else {
                $oUsuario = new Usuario();
                $oUsuario->setIdEstado(Estado::PENDIENTE);
                $oUsuario->setIdTipoUsuario(Tipo_usuario::USUARIO);
                $oUsuario->setUsuario($usuario);
                $oUsuario->setEmail($email);
                $oUsuario->setPassword($pass1);
                $oUsuario->setFechaNacimiento(Util::fechaNormalADateTime($fechaNacimiento));
                $oUsuario->setSexo($sexo);
                if ($this->ddlSexoReg->SelectedValue == 1) {
                    $oUsuario->setRutaAvatar("dios.jpg");
                } else {
                    $oUsuario->setRutaAvatar("diosa.jpg");
                }

                $mensaje = $oUsuarioBLL->grabarDatosMin($oUsuario, $pass2);
                if ($mensaje == "OK") {
                    $this->hfRegistro->Value = "1";
                    $this->talMensajeRegistro->Text = "<div class='mensaje span12'>
                                        <button type='button' class='close'>&times;</button>
                                        <p><i class='icon-thumbs-up icon-white'></i> Tu cuenta ha sido creada exitosamente, revisa tu email para validar tu usuario y comienza a disfrutar de los beneficios de las Diosas del Placer.</p>
                                    </div>";
                    $this->limpiarModalRegistro();
                } else {
                    $this->talMensajeRegistro->Text = "<div class='mensaje span12'>
                                        <button type='button' class='close'>&times;</button>
                                        <p><i class='icon-thumbs-down icon-white'></i> Ha ocurrido un error el crear tu cuenta, por favor vuelve a intentarlo en unos minutos.</p>
                                    </div>";
                }
            }
            $oUsuario = null;
        }
    }

    public function btnRecuperarPasswordOnClick($sender, $param) {
        $oUsuario = new Usuario();
        $oUsuarioBLL = new UsuarioBLL();
        $email = $this->txtRecuperarPassword->Text;
        $usuario = $this->txtRecuperarPassword->Text;
        if (Util::isNullOrEmpty($email)) {
            $this->talMensajeRecuperarPassword->Text = "<div class='mensaje span12'>
                                                        <p><i class='icon-exclamation-sign icon-white'></i> Debe ingresar su Usuario o Email.</p>
                                                    </div>";
            $this->hfRegistro->Value = "0";
        } else {
            $oUsuario = $oUsuarioBLL->recuperarPassword($email, $usuario);
            if (!Util::isNullOrEmpty($oUsuario)) {
                SendMail::enviarEmailReseteoPassword($oUsuario);
                $this->hfRegistro->Value = "1";
                $this->talMensajeRecuperarPassword->Text = "<div class='mensaje span12'>
                                                        <p><i class='icon-exclamation-sign icon-white'></i> Revisa tu email, se ha enviado un correo a <strong>" . $oUsuario->getEmail() . "</strong> con la informaci&oacute;n de la cuenta.</p>
                                                    </div>";
            } else {
                $this->talMensajeRecuperarPassword->Text = "<div class='mensaje span12'>
                                                        <p><i class='icon-exclamation-sign icon-white'></i> El email o usuario ingresado no se encuentra en nuestro sistema.</p>
                                                    </div>";
                $this->hfRegistro->Value = "0";
            }
        }
    }

    private function setMenuActive($page) {
        $active = "<li class='active'>";
        if ($page == "Index.Home") {
            $this->litMenuHome->Text = $active;
        } else if ($page == "Index.ListaRelatos" || $page == "Index.Relato") {
            $this->litMenuRelato->Text = $active;
        } else if ($page == "Index.ListaEntrevistas" || $page == "Index.Entrevista") {
            $this->litMenuEntrevista->Text = $active;
        } else if ($page == "Index.ListaNoticias" || $page == "Index.Noticia") {
            $this->litMenuNoticia->Text = $active;
        } else if ($page == "Index.Rifas" || $page == "Index.Rifa") {
            $this->litMenuRifa->Text = $active;
        } else if ($page == "Index.ListaConcursos" || $page == "Index.Concurso") {
            $this->litMenuConcurso->Text = "<li class='active right'>";
        } else if ($page == "Index.Publicate") {
            $this->litMenuPublicate->Text = "<li class='active right'>";
        }
    }

    private function limpiarModalRegistro() {
        $this->txtUsuarioReg->Text = "";
        $this->txtEmailReg->Text = "";
        $this->txtPasswordReg->Text = "";
        $this->txtPasswordConfirmeReg->Text = "";
        $this->txtFechaNacimientoReg->Text = "";
        $this->ddlSexoReg->SelectedValue = "sexo";
    }

}

?>
